package collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * @author 老安
 * @data 2022/6/30 21:39
 * 集合的遍历
 * Collection层面不支持随机访问操作(根据指定的位置获取对应的元素)
 * 但是集合支持遍历操作,我们可以通过遍历集合来获取每一个元素
 * 集合中提供了统一的遍历方式:迭代器遍历
 * 对应方法
 * Iterator iterator()
 * 该方法可以返回一个用于遍历当前集合的迭代器
 */
public class IteratorDemo {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("one");
        c.add("#");
        c.add("two");
        c.add("#");
        c.add("three");
        c.add("#");
        c.add("four");
        c.add("#");
        c.add("five");
        c.add("#");
        c.add("six");
        System.out.println(c);
        //1.获取当前集合的迭代器对象
        Iterator it = c.iterator();
        //2.利用迭代器对象获取集合中的每个元素
        /*
        *  boolean hasNext()
        * 判断集合是否还有下一个元素,如果有,就返回true,没有返回false,迭代器的起始位置可以理解为是集合中第一个元素之前,因此第一次调用hasNext()就是判断集合是否有第一个元素
        * E next()
        * 获取集合中的"下一个元素".获取元素之后,会将迭代器的位置向后移动一个元素的位置
        * */
        while (it.hasNext()){
            String e = (String) it.next();
            /*
            * 迭代器在遍历的过程中不能通过集合的方法增删元素,否则迭代器会抛出异常
            * ConcurrentModificationException 并发修改异常
            * */
            if ("#".equals(e)){
                //c.remove(e);
                //迭代器提供了remove方法,可以将本次通过next方法获取的元素进行移除
                it.remove();
            }
            System.out.println(e);
        }
        System.out.println(c);
    }
}
